perm filename U11[1,BGB]1 blob sn#139438 filedate 1975-01-11 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00006 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	/NOTATION:
C00004 00003	LOC	NXT	*SOURCE MODE 0 (REGISTER) GET SOURCE DATA
C00007 00004	_____________________________________________________________________
C00009 00005	LOC	NXT	* SOURCE BYTE ODD
C00011 00006
C00012 ENDMK
C⊗;
/NOTATION:
/ 1. MICRO ROUTINES BEGIN WITH A COMMENT PREFIXED BY "*".
/ 2. ALL OTHER COMMENTS ARE PREFIXED BY SLASH "/".
/ 3. R[N] REFERS TO SCRATCH PAD REGISTER N,
/    R[7] IS ALSO REFERRED TO AS "PC".
/ 4. R[S] REFERS TO THE REGISTER SPECIFIED IN THE SOURCE FIELD
/    OF THE CURRENT INSTRUCTION, IR<8:6>
/    R[D] REFERS TO THE REGISTER SPECIFIED IN THE DESTINATION FIELD
/    OF THE CURRENT INSTRUCTION, IR<2:0>
/ 5. K[N] REFERS TO A LOCATION OF THE CONSTANTS CHIP THAT CONTAINS N.
/ 6. "BUT" STANDS FOR "BRANCH ON MICRO TEST".

LOC	NXT	* INSTRUCTION FETCH
062	053	F-1	BA←PC; DATI
053	365	F-2	B←PC+2
365	364	F-3	PC←B; CKOFF
364	061	F-4	B,IR←UNIBUS DATA
061	001	F-5	B←B SEX; BUT IR DECODE

/ IF DOUBLE OP INST GOTO S0-1 THRU S7-1 DEPENDING ON SOURCE MODE
/ IF SINGLE OP INST GOTO D0-1 THRU D7-1 DEPENDING ON DESTINATION MODE (INCLUDING JSR)
/ IF BRANCH, CHANGE PC GOTO B-1
/ IF BRANCH, PC UNCHANGED GOTO B2-2
/ IF CLEAR OR SET COND CODE(S) GOTO CCM-1
/ IF INST=RTS GOTO R1-1
/ IF INST=RTI GOTO R2-1
/ IF INST=WAIT GOTO W-1
/ IF INST=HALT GOTO H-1
/ IF INST=RESET GOTO RST-1
/ IF INST=EMT GOTO ET-1
/ IF INST=BPT GOTO BT-1
/ IF INST=IOT GOTO IT-1
/ IF INST=TRAP GOTO T-1
/ IF RESERVED INSTRUCTION (NONE OF THE ABOVE) GOTO RT-1
LOC	NXT	*SOURCE MODE 0 (REGISTER) GET SOURCE DATA
		/GET TO S0-1 FROM F-5 VIA BUT IR DECODE <11:9>=0
201	007	S0-1  B←R[S]; BUT BYTE
		/IF BYTE INST GOTO SBE-1 (MUST BE EVEN BYTE)
007	001	S0-2 R[10]←B; BUT DESTINATION
		/IF IR<5:3> =0 GOTO D0-1
		/           =1 GOTO D1-1
		/           =2 GOTO D2-1
		/           =3 GOTO D3-1
		/           =4 GOTO D4-1
		/           =5 GOTO D5-1
		/           =6 GOTO D6-1
		/           =7 GOTO D7-1
_____________________________________________________________________
LOC	NXT	*SOURCE MODE 1 (REGISTER DEFERRED) GET SOURCE DATA
		/GET TO S1-1 FROM F-5 VIA BUT IR DECODE <11:9>=1
203	244	S1-1  BA←R[S]; DATI; CKOFF; ALBYT
		/GET TO S1-2 FROM S2-3 VIA GOTO
		/GET TO S1-2 FROM S3-5 VIA GOTO
		/GET TO S1-2 FROM S6-5 VIA GOTO
244	007	S1-2 B←UNIBUS DATA; BUT BYTE; GOTO S0-2
		/IF ODD BYTE GOTO SBO-1
		/IF EVEN BYTE GOTO SBE-1
		/IF NOT BYTE FALL THROUGH TO S0-2
_____________________________________________________________________
LOC	NXT	*SOURCE MODE 2 (AUTO-INCREMENT) GET SOURCE DATA
		/GET TO S2-1 FROM F-5 VIA BUT IR DECODE <11:9>=2
205	301	S2-1  BA←R[S]; DATI; ALBYT
301	014	S2-2  B←R[S]+1+BYTE;BAR
		/GET TO S2-3 FROM S4-1 VIA GOTO
014	244	S2-3  R[S]←B; CKOFF; GOTO S1-2
_____________________________________________________________________
LOC	NXT	*SOURCE MODE 3 (AUTO-INC DEFERRED) GET SOURCE DATA
		/GET TO S3-1 FROM F-5 VIA BUT IR DECODE <11:9>=3
207	016	S3-1  BA←R[S]; DATI (MUST BE AN EVEN ADDRESS HERE)
016	017	S3-2  B←R[S]+2
		/GET TO S3-3 FROM S5-1 VIA GOTO
017	134	S3-3  R[S]←B; CKOFF
		/GET TO S3-4 FROM S7-5 VIA GOTO
134	274	S3-4  B←UNIBUS DATA
274	244	S3-5  BA←B; DATI; CKOFF; GOTO S1-2; ALBYT
_____________________________________________________________________
LOC	NXT	*SOURCE MODE 4 (AUTO DECREMENT) GET SOURCE DATA
		/GET TO S4-1 FROM F-5 VIA BUT IR DECODE <11:9>=4
211	014	S4-1  B,BA←R[S]-1-BYTE.BAR; DATI; ENABOVER; GOTO S2-3; ALBYT
_____________________________________________________________________
LOC	NXT	*SOURCE MODE 5 (AUTO DECREMENT DEFERRED) GET SOURCE DATA
		/GET TO S5-1 FROM F-5 VIA BUT IR DECODE <11:9>=5
213	017	S5-1  B,BA←R[S]-2; DATI (ADDR MUST BE EVEN); ENABOVER; GOTO S3-3
_____________________________________________________________________
LOC	NXT	*SOURCE MODE 6 (INDEXED) GET SOURCE DATA
		/GET TO S6-1 FROM F-5 VIA BUT IR DECODE <11:9>=6
215	025	S6-1	BA←PC; DATI(ADDR MUST BE EVEN)
025	026	S6-2	B←PC+2
026	027	S6-3	PC←B; CKOFF
027	030	S6-4	B←UNIBUS DATA
030	244	S6-5	BA←B+R[S]; DATI; CKOFF; GOTO S1-2; ALBYT
_____________________________________________________________________
LOC	NXT	*SOURCE MODE 7 (INDEXED DEFERRED) GET SOURCE DATA
		/GET TO S7-1 FROM F-5 VIA BUT IR DECODE <11:9>=7
217	032	S7-1	BA←PC; DATI(ADDR MUST BE EVEN)
032	033	S7-2	B←PC+2
033	034	S7-3	PC←B; CKOFF
034	035	S7-4	B←UNIBUS DATA
035	134	S7-5	BA←B+R[S]; DATI(ADDR MUST BE EVEN); CKOFF; GOTO S3-4
LOC	NXT	* SOURCE BYTE ODD
/ GET TO SBO-1 FROM S1-2 VIA BUT BYTE (BYTE INST. AND SOURCE DATA ODD ADDR)
067	346	SBO-1	SHIFT B RIGHT; F SHIFT
346	324	SBO-2	SHIFT B RIGHT; F SHIFT
324	340	SBO-3	SHIFT B RIGHT; F SHIFT
340	361	SBO-4	SHIFT B RIGHT; F SHIFT
361	050	SBO-5	SHIFT B RIGHT; F SHIFT
050	020	SBO-6	SHIFT B RIGHT; F SHIFT
020	052	SBO-7	SHIFT B RIGHT; F SHIFT
052	047	SBO-8	SHIFT B RIGHT; GOTO SBE-1
_____________________________________________________________________
LOC	NXT	* SOURCE BYTE EVEN
		/GET TO SBE-1 FROM SBO-8 VIA GOTO
		/GET TO SBE-1 FROM S1-2 VIA BUT BYTE (BYTE INST & SOURCE DATA EVEN ADDR)
		/GET TO SBE-1 FROM S0-1 VIA BUT BYTE (BYTE INST)
047	001	SBE-1 R[10]←B SEX; BUT DESTINATION
	/ IF IR<5:3> =0 GOTO D0-1
	/            =1 GOTO D1-1
	/            =2 GOTO D2-1
	/            =3 GOTO D3-1
	/            =4 GOTO D4-1
	/            =5 GOTO D5-1
	/            =6 GOTO D6-1
	/            =7 GOTO D7-1